package com.modules.controller.sys;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.common.constant.CommonConstant;
import com.common.controller.BaseController;
import com.common.util.MyDateUtil;
import com.common.vo.LoginUser;
import com.common.vo.Result;
import com.modules.dto.sys.req.LogEntityReq;
import com.modules.entity.sys.LogEntity;
import com.modules.service.sys.LogService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;


/**
 * 日志
 * @author yyq
 *
 */
@RestController
@RequestMapping("/sys/log")
public class LogController extends BaseController<LogEntity>{

	@Resource
	private LogService service;


	/**
	 * 查询
	 * @param entity
	 * @return
	 */
	@GetMapping(value = "/select")
	public Result<?> select(LogEntityReq entity,
							@RequestParam(value = "page", defaultValue = "1") Integer page,
							@RequestParam(value = "limit", defaultValue = "10") Integer limit){
		// 根据组织/部门级别查询权限，后期自加
		LoginUser loginUser = getUser();
		entity.setOid(ObjectUtil.isNull(entity.getOid()) ? loginUser.getLastOid() : entity.getOid());
		entity.setPage(getPage(page, limit));
		entity.setLimit(getLimit(page, limit));
		entity.setRoleType(loginUser.getRoleType());
		entity.setRoleTypeValue(CommonConstant.ONE);
		entity.setLoginId(loginUser.getId());
		entity.setYear(MyDateUtil.getStrCurrentDate(MyDateUtil.sfh_y));
		return service.selectPage(entity);
	}


//	/**
//	 * 查询
//	 * @param entity
//	 * @return
//	 */
//	@GetMapping(value = "/select")
//	public Result<?> select(LogEntityReq entity){
//		// 查询范围：改成xml查询和用户管理那里的查询一样
//		entity.setOid(entity.getOid() == null ? getUser().getLastOid() : entity.getOid());
//		LambdaQueryWrapper<LogEntity> wrapper = new LambdaQueryWrapper<>();
//		if(StrUtil.isNotEmpty(entity.getUserName())){
//			wrapper.like(LogEntity::getUserName, entity.getUserName());
//		}
//		if(entity.getType() != null){
//			wrapper.like(LogEntity::getType, entity.getType());
//		}
//		if(StrUtil.isNotEmpty(entity.getModuleName())){
//			wrapper.like(LogEntity::getModuleName, entity.getModuleName());
//		}
//		if(StrUtil.isNotEmpty(entity.getModuleOperation())){
//			wrapper.like(LogEntity::getModuleOperation, entity.getModuleOperation());
//		}
//		if(StrUtil.isNotEmpty(entity.getMethod())){
//			wrapper.eq(LogEntity::getMethod, entity.getMethod());
//		}
//		if(StrUtil.isNotEmpty(entity.getIp())){
//			wrapper.like(LogEntity::getIp, entity.getIp());
//		}
//		if(StrUtil.isNotEmpty(entity.getBeginTime()) && StrUtil.isNotEmpty(entity.getEndTime())){
//			wrapper.between(LogEntity::getCreateDate, entity.getBeginTime(), entity.getEndTime());
//		}else {
//			wrapper.apply("convert(varchar(4), create_date,120) = {0}", MyDateUtil.getStrCurrentDate(MyDateUtil.sfh_y));
//			//wrapper.apply("year(create_date) = {0}", MyDateUtil.getStrCurrentYear());
//		}
//		wrapper.orderByDesc(LogEntity::getId);
//		IPage<LogEntity> iPage = service.page(getPage(), wrapper);
//		return Result.page(iPage.getRecords(), iPage.getTotal());
//	}
	

}
